ACID (Atomicity, Consistency, Isolation, Durability) হল ডেটাবেস সিস্টেমের মৌলিক বৈশিষ্ট্যসমূহ, যা নিশ্চিত করে যে ডেটাবেস ট্রানজ্যাকশনগুলি সঠিকভাবে এবং নিরাপদভাবে সম্পন্ন হয়। AWS DynamoDB ACID বৈশিষ্ট্যগুলি নির্দিষ্ট পরিমাণে সমর্থন করে, যা ট্রানজ্যাকশনাল সিস্টেমের জন্য গুরুত্বপূর্ণ।
DynamoDB একটি NoSQL ডেটাবেস হলেও, এটি ACID compliance এর একটি নির্দিষ্ট স্তর প্রদান করে, বিশেষ করে ট্রানজেকশনাল অপারেশনের জন্য। এই অপারেশনগুলি আপনাকে একাধিক ডেটা পয়েন্ট নিয়ে একটি সম্পূর্ণ পারস্পরিক সম্পর্কিত কাজ পরিচালনা করতে দেয়, যেখানে ট্রানজেকশনটি সফলভাবে সম্পন্ন না হলে কোনও পরিবর্তন ঘটবে না।
Atomicity (আটমিকিটি):
DynamoDB তে Transactional Writes এই সুবিধা প্রদান করে। আপনি একাধিক রেকর্ডের মধ্যে পারস্পরিক নির্ভরশীলতা বজায় রেখে ইনসার্ট, আপডেট বা ডিলিট করতে পারেন, এবং যদি কোন একটি অপারেশন ব্যর্থ হয়, তবে সমস্ত পরিবর্তন রোলব্যাক হবে।
উদাহরণ:
Consistency (সঙ্গতি):
DynamoDB নিশ্চিত করে যে একটি ট্রানজেকশন শুরু হওয়ার পর ডেটাবেসের মান Consistency অনুযায়ী থাকবে, এমনকি একাধিক রেকর্ড পরিবর্তন বা প্রক্রিয়া করা হলে। তবে, Eventual Consistency প্রাথমিকভাবে DynamoDB তে ব্যবহৃত হলেও, ট্রানজেকশনাল API গুলি ব্যবহার করে আপনি Strong Consistency নিশ্চিত করতে পারেন।
Isolation (আয়সোলেশন):
DynamoDB তে Isolation সাধিত হয় ট্রানজেকশন চালানোর সময়। যদি একাধিক ট্রানজেকশন একসাথে চলে, তবে তাদের মধ্যে কোনও পারস্পরিক প্রভাব পরবে না এবং তারা সম্পূর্ণ আলাদাভাবে সম্পন্ন হবে।
Durability (স্থায়িত্ব):
DynamoDB এর মধ্যে Durability সুনিশ্চিত করা হয়, কারণ এটি Multiple Availability Zones এ ডেটা রেপ্লিকেট করে। যখন আপনি ট্রানজেকশন সম্পন্ন করেন, তখন নিশ্চিত হয় যে ডেটা স্থায়ীভাবে সঞ্চিত হয়েছে এবং তা যদি সার্ভার বা সিস্টেম ক্র্যাশ হয়, তাও তা নিরাপদ থাকবে।
DynamoDB তে ACID-compliant transactions চালানোর জন্য, AWS একটি ট্রানজেকশনাল API প্রদান করেছে যা TransactWriteItems
এবং TransactGetItems
নামক দুটি প্রধান অপারেশন ধারণ করে।
এই অপারেশনটি একাধিক Write অপারেশনকে একসাথে একত্রিত করতে এবং একটি একক ACID ট্রানজেকশনে পরিচালনা করতে সক্ষম। এই অপারেশনটি ইনসার্ট, আপডেট, এবং ডিলিট অপারেশনগুলিকে একত্রে সম্পন্ন করে।
উদাহরণ (Python SDK):
import boto3
from botocore.exceptions import ClientError
# DynamoDB ক্লায়েন্ট তৈরি করা
dynamodb = boto3.client('dynamodb')
# ট্রানজেকশনাল লেখার জন্য আইটেম
try:
response = dynamodb.transact_write_items(
TransactItems=[
{
'Put': {
'TableName': 'Users',
'Item': {
'UserID': {'S': '12345'},
'Name': {'S': 'John Doe'},
'Age': {'N': '30'}
}
}
},
{
'Update': {
'TableName': 'Accounts',
'Key': {
'AccountID': {'S': 'A123'}
},
'UpdateExpression': 'SET Balance = Balance - :amount',
'ExpressionAttributeValues': {
':amount': {'N': '100'}
}
}
}
]
)
print("Transaction successful!")
except ClientError as e:
print(f"Error: {e}")
এই অপারেশনটি একাধিক Get অপারেশনকে একত্রিত করে এবং ডেটা একসাথে রিটার্ন করে, যা একটি ACID ট্রানজেকশন হিসেবে কাজ করে।
ACID এর মাধ্যমে আপনি আপনার অ্যাপ্লিকেশনে আরও নির্ভরযোগ্য এবং সঠিক ডেটাবেস ট্রানজেকশন গঠন করতে পারেন।
common.read_more